/**
 * 
 */
package com.cplsystems.incidencias.vm.cuentas.utils;

import java.io.Serializable;
import java.util.Map;

import org.zkoss.bind.Property;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;
import org.zkoss.zk.ui.util.Clients;

import com.cplsystems.incidencias.app.utils.IncidenciasUtils;
import com.cplsystems.incidencias.vm.cuentas.CuentasVM;

/**
 * @author César Palalía López (csr.plz@aisa-automation.com)
 * 
 */
public class CuentaValidator extends AbstractValidator implements Serializable {

	private static final long serialVersionUID = -5829943022639349444L;
	private Map<String, Property> beanProps;

	public void validate(ValidationContext ctx) {
		beanProps = ctx.getProperties(ctx.getProperty().getBase());
		validarDatosGenerales(ctx);
	}

	private void validarDatosGenerales(ValidationContext ctx) {
		CuentasVM cuenta = (CuentasVM) beanProps.get(".").getBase();
		if (cuenta != null) {
			if (cuenta.getOrganizacion().getNombre() == null
					|| cuenta.getOrganizacion().getNombre().isEmpty()
					|| cuenta.getOrganizacion().getRfc() == null
					|| cuenta.getOrganizacion().getRfc().isEmpty()
					|| cuenta.getOrganizacionDomicilio().getDomicilio()
							.getCalle() == null
					|| cuenta.getOrganizacionDomicilio().getDomicilio()
							.getCalle().isEmpty()
					|| cuenta.getClavePersonal().getUsuario() == null
					|| cuenta.getClavePersonal().getUsuario().isEmpty()
					|| cuenta.getClavePersonal().getClave() == null
					|| cuenta.getClavePersonal().getClave().isEmpty()) {
				IncidenciasUtils.showMessage(
						"Asegúrese de que los campos marcados con * "
								+ "contengan la información requerida ",
						Clients.NOTIFICATION_TYPE_WARNING, 0);
				this.addInvalidMessage(ctx, "");
				return;
			}
			if (!cuenta.getClavePersonal().getClave()
					.equals(cuenta.getClavePersonal().getClaveRepetida())) {
				IncidenciasUtils.showMessage(
						"Las claves que ha ingresado no coinciden. "
								+ "Por favor ingréselas nuevamente ",
						Clients.NOTIFICATION_TYPE_ERROR, 0);
				this.addInvalidMessage(ctx, "");
				return;
			}
		}
	}

}
